Computing devices, such as those used in personal computers, laptops, video games, etc., include a central processing unit, system memory, video graphics processing circuitry, audio processing circuitry, and peripheral ports. The peripheral ports allow the central processing unit to access peripheral devices such as monitors, printers, external tape drives, video sources, etc., which facilitate the execution of computing applications. Such computing applications include word processing applications, drawing applications, painting applications, spreadsheet applications, video games, broadcast television signals, cable television signals, etc. For example, as a central processing unit processes an application, it provides image data to the video graphics processing circuitry, which, in turn, processes the image data and provides the processed image data to a display device. The display device may be a computer monitor, a television, a LCD panel and/or any other device that displays pixel information.
Typically, the central processing unit processes software to generate geometric data regarding the images to be rendered and provides the geometric data to the video graphics circuit. The video graphics circuit, upon receiving the geometric data, processes it to generate pixel data of the image. As the video graphics circuit is generating the pixel data, it stores the pixel data in a frame buffer. When the video graphics circuit has processed a full frame of geometric data, the frame buffer is full and provides the pixel data to the display device. Typically, the video graphics circuit includes a culling module, a set-up module, and a raster module.
Computing devices may include various types of processing devices that interface with the video graphics circuit, which often require customized programming. The customized programming allows for a customized output of images, and/or predictable outputs from different types of processing devices. As such, the video graphics circuit, regardless of the processing device it's coupled to, will provide a predictable customized image output to the display monitor. This customized programming is typically hard coded and usually does not allow any user interaction to alter the output of images by changing the customized code.
To give the user more control in determining and providing a customized output of images, video editing has been developed. Video editing allows a user to generate object code by choosing particular options from menus that correspond to a set of code. Based on the options that are selected, the associated object code is implemented, and the image is altered in some manner. For example, the object code can make the image lighter or darker. Once the user is satisfied with the resulting image, the corresponding object code will be provided to the video graphics circuit.
Another programming technique that is used to generate object code is visual programming. Such visual programming requires its users to select specific programming language blocks to generate an application. The user then creates links between the selected programming language blocks to provide a particular and continuous flow of the application. The user may also choose from differing amounts of programming language blocks based on the application, which provided inconsistencies and unnecessary confusion. Additionally, the programming language blocks were not specifically designed for use in video graphics processing thereby creating a large learning curve for the user.
Therefore, a need exists for a method and apparatus for generating generic programming instructions using visual programming that provides a set number of linked programming language blocks for use in video graphics processing.